<?php


namespace App\Services\Agora;


class ProjectService extends BaseService
{
    /**
     * 创建一个新的 Agora 项目
     * @param $name 项目名称
     * @param $enable_sign_key 是否启用主要证书
     * @return bool|mixed|string
     */
    public function createProject($name, $enable_sign_key)
    {
        $res = $this->request('/dev/v1/project', [
            'name' => $name,
            'enable_sign_key' => $enable_sign_key,
        ]);
        return $res;
    }

    /**
     * 获取指定的 Agora 项目的信息
     * @param $id
     * @param $name
     * @return bool|mixed|string
     */
    public function project($id, $name)
    {
        $project = $this->request('/dev/v1/project', [
            'id' => $id,
            'name' => $name
        ], 'GET');
        return $project;
    }

    /**
     * 获取所有的 Agora 项目信息。
     * @return bool|mixed|string
     */
    public function projects()
    {
        $allProject = $this->request('/dev/v1/projects', [], 'GET');
        return $allProject;
    }

    /**
     * 禁用或启用指定的项目
     * @param $id 项目ID
     * @param $status 0禁用 1启用
     * @return bool|mixed|string
     */
    public function projectStatus($id, $status)
    {
        $res = $this->request('/dev/v1/project_status', [
            'id' => $id,
            'status' => $status
        ]);
        return $res;
    }

    /**
     * 重置指定项目的主要 App 证书。
     * 如果原来的主要 App 证书泄漏了，你可以使用该方法对主要 App 证书进行重置。
     * 如果该项目的主要 App 证书尚未启用，调用该方法会启用主要 App 证书。
     * @param $id
     * @return bool|mixed|string
     */
    public function reset_signkey($id)
    {
        $res = $this->request('/dev/v1/reset_signkey', [
            'id' => $id
        ]);
        return $res;
    }

    /**
     * 启用或禁用指定项目的主要 App 证书
     * @param $id 项目ID
     * @param $enable true|false
     * @return bool|mixed|string
     */
    public function signkey($id, $enable)
    {
        $res = $this->request('/dev/v1/signkey', [
            'id' => $id,
            'enable' => $enable
        ]);
        return $res;
    }

    /**
     * 设置指定项目的录制服务器的 IP 地址
     * @param $id 项目ID
     * @param $recording_server IP 地址  10.12.1.5:8080
     * @return bool|mixed|string
     */
    public function recConfig($id, $recording_server)
    {
        $res = $this->request('/dev/v1/recording_config', [
            'id' => $id,
            'recording_server' => $recording_server
        ]);
        return $res;
    }

    /**
     * 获取指定项目一年内的用量数据
     * @param $project_id 项目ID
     * @param $from_date YYYY-MM-DD
     * @param $to_date YYYY-MM-DD
     * @param $business 指定类型查询
     * default: 音视频。不包括小程序的用量。
     * transcodeDuration: 转码。
     * recording: 本地服务端录制。
     * cloudRecording: 云端录制。
     * miniapp: 小程序。
     * @return bool|mixed|string
     */
    public function usage($project_id, $from_date, $to_date, $business)
    {
        $res = $this->request('/dev/v3/usage', [
            'project_id' => $project_id,
            'from_date' => $from_date,
            'to_date' => $to_date,
            'business' => $business
        ],'GET');
        return $res;
    }
}
